package com.example.vv.model.home.base.contract;

import com.example.vv.fragmentWork.base.BaseView;
import com.example.vv.fragmentWork.entity.ArticleEntity;
import com.example.vv.fragmentWork.entity.BannerEntity;
import com.example.vv.fragmentWork.entity.SearchEntity;
import com.example.vv.fragmentWork.entity.TopEntity;
import com.example.vv.req.SearchRequest;
import com.example.vv.res.net.BaseResponse;


import java.util.List;

import io.reactivex.Observable;

public interface HomeContract {
    interface Model{
        //网络请求banner数据
         Observable<BaseResponse> REQUEST_BANNER(String api);

        //网络请求top数据
        Observable<BaseResponse> REQUEST_TOP(String api);

        //网络请求article数据
        Observable<BaseResponse> REQUEST_ARTICLE(String api);

        //网络请求article数据
        Observable<BaseResponse> REQUEST_SEARCH(String api,String values);

        //拿图
        Observable<String> GET_URL();
    }
    interface View extends BaseView {
        /**
         * V层拿到数据后进行展示
         * @param bannerEntities
         */
        void getBannerData(List<BannerEntity> bannerEntities);

        /**
         * 展示数据
         * @param topEntities
         */
        void getTopData(List<TopEntity> topEntities);

        /**
         * 展示首页文章
         * @param articleEntities
         */
        void getArticleData(ArticleEntity articleEntities);

        /**
         * 搜索
         * @param searchEntity
         */
//        void getSearchData(SearchEntity searchEntity);

        /**
         * 获取背景
         * @param url
         */
        void getImageData(String url);
    }
    interface Presenter{
        /**
         * 获取广告数据
         */
        void setBannerData();
        /**
         * 处理title数据
         * @param bannerEntity
         * @return list给banner
         */
        List<String> setTitleData(List<BannerEntity> bannerEntity);
        /**
         * 处理image数据
         * @param bannerEntity
         * @return image给banner
         */
        List<String> setImageData(List<BannerEntity> bannerEntity);

        /**
         * 获取置顶数据
         */
        void setTopData();

        /**
         * 获取首月文章数据
         */
        void setArticleData(String i);

        /**
         * 获取搜索数据
         * @param values
         */
//        void setSearchData(String values);

        /**
         * 获取数据
         */
        void getImageData();
    }


}
